package com.region.integral.common_user.obtain.dao.impl;

import java.util.List;

import org.springframework.stereotype.Component;

import com.region.integral.common_user.obtain.dao.IIntegralInviteFriend;
import com.region.integral.common_user.obtain.vo.IntegralData;
import com.region.integral.common_user.pojo.CUIEntity;
import com.region.integral.common_user.xml.Regulation;
import com.region.integral.common_user.xml.dto.GroupPeopleRise;
import com.region.integral.common_user.xml.dto.InviteFriend;
import com.region.integral.exception.IntegralException;
import com.region.integral.hibernate.BaseHibernate;
import com.region.integral.util.XMLRegulationUtil;
@Component("inviteFriend")
public class IntegralInviteFriendImpl extends BaseHibernate implements
		IIntegralInviteFriend {

	@Override
	public void inviteFriend(int userid,int inviteFriendNum, IntegralData integralData)
			throws IntegralException {
		CUIEntity cuiEntity = getCUIEntity(userid);
		if (cuiEntity != null) {
			int inviteFriend = inviteFriendNum;

			Regulation regulation = XMLRegulationUtil.unmarshaller();
			List<InviteFriend> inviteFriends = regulation.getInvitefriend();
			for (InviteFriend iFriend : inviteFriends) {
				if (iFriend.getRatedOne()!=0 && iFriend.getRatedOne() == inviteFriend) {
					int currIntegral = cuiEntity.getCurrIntegral();
					int maxIntegral = cuiEntity.getMaxIntegral();
					int totalIntegral = currIntegral+ iFriend.getIntegral();
					cuiEntity.setCurrIntegral(totalIntegral);
					if (maxIntegral < totalIntegral) {
						cuiEntity.setMaxIntegral(totalIntegral);
					}
					integralData.setSuccee(true);
					integralData.setObtainIntegral(iFriend.getIntegral());
					hibernateTemplate.update(cuiEntity);
				}
				if (iFriend.getRatedtwo()!=0 && iFriend.getRatedtwo() == inviteFriend) {
					int currIntegral = cuiEntity.getCurrIntegral();
					int maxIntegral = cuiEntity.getMaxIntegral();
					int totalIntegral = currIntegral+ iFriend.getIntegral();
					if (maxIntegral < totalIntegral) {
						cuiEntity.setMaxIntegral(totalIntegral);
					}
					cuiEntity.setCurrIntegral(totalIntegral);
					hibernateTemplate.update(cuiEntity);
				}
				if (iFriend.getOver()!=0 && inviteFriend > iFriend.getOver()) {
					int currIntegral = cuiEntity.getCurrIntegral();
					int maxIntegral = cuiEntity.getMaxIntegral();
					int totalIntegral = currIntegral+ iFriend.getIntegral();
					if (maxIntegral < totalIntegral) {
						cuiEntity.setMaxIntegral(totalIntegral);
					}
					cuiEntity.setCurrIntegral(totalIntegral);
					//cuiEntity.setInviteFriendNum(inviteFriend + 1);
					hibernateTemplate.update(cuiEntity);
					break;
				}
				if (iFriend.getRate()!=0 && inviteFriend % iFriend.getRate() == 0) {
					int currIntegral = cuiEntity.getCurrIntegral();
					int maxIntegral = cuiEntity.getMaxIntegral();
					int totalIntegral = currIntegral+ iFriend.getIntegral();
					cuiEntity.setCurrIntegral(totalIntegral);
					if (maxIntegral < totalIntegral) {
						cuiEntity.setMaxIntegral(totalIntegral);
					}
					//cuiEntity.setInviteFriendNum(inviteFriend + 1);
					integralData.setSuccee(true);
					integralData.setObtainIntegral(iFriend.getIntegral());
					hibernateTemplate.update(cuiEntity);
				}
				
			}
		}
	}

}
